package com.briup.ch08;

import com.homework.ch05.Stu;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class Test5_Set {
    public static void main(String[] args) {
        //List equals
        List<Integer> list=new ArrayList<>();
        list.add(10);
        list.add(20);
        list.add(30);
        list.add(20);
        System.out.println(list);
        System.out.println(list.contains(20));
        //Set equals hashcode
        Set<Integer> set=new HashSet<>();
        set.add(20);
        set.add(30);
        set.add(20);
        System.out.println(set);
        System.out.println(set.contains(20));
        //List.Set结合类
        Student s1=new Student("张三",18,200);
        Student s2=new Student("李四",20,400);
        Student s3=new Student("王五",18,200);
        Student s4=new Student("张三",18,200);
        ArrayList<Student> list2=new ArrayList<>();
        list2.add(s1);
        list2.add(s2);
        list2.add(s3);
        list2.add(s4);
        list2.add(s2);
        s2.setName("李思思");//指向同一块空间
        System.out.println(list2);
        //明明s4和s1一样，没有重写equals所以是3，重写之后就是0也就是s1内容
        System.out.println(list2.indexOf(s4));
        System.out.println(list2.indexOf(new Student("王五",18,200)));
        Set<Student> set2=new HashSet<>();
        set2.add(s1);
        set2.add(s2);
        set2.add(s3);
        set2.add(s4);
        set2.add(s2);
        //没有重写hashcode，是以地址值做基础算法形成
        //散列值不同新增成功，散列值相同不会插入
        //重写hashcode，业务数据做基础算法，决定了存储位置
        //相同位置有多个元素，要进行等值比较
        System.out.println(set2);
    }
}
